home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / math / fixfloa2 / fixfloat.h < prev    next >
C/C++ Source or Header  |  1995-03-26  |  2KB  |  101 lines

  1. #define FIXFLOAT_H
  2.  
  3. // ### should the rnd variables be declared
  4. //     to be reached from c-code ??
  5.  
  6. void gen_fixfloat_tables();
  7. long fftoa(long ff, char *buf);
  8. long fftoah(long ff, char *buf);
  9.  
  10. long rand32();
  11. long randpowint(long po2int,long interval);
  12. long randinter(long interval);
  13.  
  14.  
  15. long ffsmul(long,long);
  16. long ffmul(long,long);
  17. long ffsdiv(long,long);
  18. long ffdiv(long,long);
  19.  
  20. long ffsin(long val);
  21. long ffcos(long val);
  22. long ffasin(long val);
  23. long ffacos(long val);
  24.  
  25. long fftan(long val);
  26. long ffatan(long val);
  27. long ff_vec_to_ang(long x_vect, long y_vect);
  28.  
  29. long fflog2(long val);
  30. long ffexp2(long val);
  31. long ffpow(long base, long expo);
  32. long ffsqrt(long val);
  33. long ffhyp(long a, long b);
  34. long fftrihyp(long a, long b, long c);
  35.  
  36. long ffmuldiv(long a, long b, long c, long d);
  37. long ffmmd(long a, long b, long c);
  38.  
  39. long ffortproj(long a, long b, long c, long d);
  40. // returns (a*b+c*d)/(a*a+c*c)
  41.  
  42. long ffortproj1(long a, long b, long c, long d);
  43. // returns (a*b+c*d)/sqrt(a*a+c*c)
  44.  
  45. long ffdot_through_hyps(long a, long b, long c, long d);
  46. //returns (a*b+c*d)/(sqrt(a*a+c*c)*sqrt(b*b+d*d))
  47.  
  48. long ff_solve_2nd_poly(long p, long q, long *conj_ptr, long *pre_ptr);
  49. // solves 2nd degree equation by std formula.
  50. // nonzero return indicates error
  51.  
  52. long ffalmosthyp(long a, long b);
  53. // returns approximation to sqrt( a*a + b*b)
  54.  
  55. long isqrt(long a); 
  56. // returns the integer!! root of a. NOT A FIXFLOAT ROUTINE !!
  57.  
  58. long ff_double_div(long denom_lo, long denom_hi, long nom, long *dec_part);
  59. long ff_double_shift(long *lo_ptr, long *hi_ptr, long aritm_flag, long steps);
  60.  
  61.  
  62.  
  63. long iffsmul(long, long);
  64. #pragma aux iffsmul = \
  65.          "imul   edx"\
  66.          "shrd   eax,edx,16"\
  67.          parm [eax] [edx]\
  68.          modify [edx];
  69.  
  70.  
  71. long iffmul(long, long);
  72. #pragma aux iffmul = \
  73.          "mul    edx"\
  74.          "shrd   eax,edx,16"\
  75.          parm [eax] [edx]\
  76.          modify [edx];
  77.  
  78.  
  79. long iffsdiv(long,long);
  80. #pragma aux iffsdiv = \
  81.          "cdq    "\
  82.          "shld   edx,eax,16"\
  83.          "shl    eax,16"\
  84.          "idiv   ecx"\
  85.          parm [eax] [ecx]\
  86.          modify [edx];
  87.  
  88. long iffdiv(long,long);
  89. #pragma aux iffdiv = \
  90.          "mov    edx,eax"\
  91.          "shl    eax,16"\
  92.          "shr    edx,16"\
  93.          "div   ecx"\
  94.          parm [eax] [ecx]\
  95.          modify [edx];
  96.  
  97.  
  98.  
  99.  
  100.  
  101.